import { reactive, ref } from 'vue';
import { cloneDeep, sum, isPlainObject } from 'lodash';
import { IFormParams, ICreateOrEditParams, IRewardRow, IPoster } from './interface';

import { DEFAULT_RED_EXCHANGE_DESC, DEFAULT_EXCHANGE_DESC } from './index';

/** 默认的form参数, 具体的参数的注释看interface文件 */
const defaultFormParams: IFormParams = {
    /** 步骤二
     * 奖品及群聊字段
     */
    // 奖品设置
    reward_type: 1, // 1: 阶梯奖励，2: 单一奖励
    reward_list: [
        {
            reward_type: 1, // 1: 实物， 2: 红包
            reward_title: '奖品一',
            reward_image: '//static.scrm.keyid.cn/assets/images/web-pc/default-liwu.png', // 是一段url
            reward_stock: 100, // int 类型
            help_num: 1, // int 类型
            // > 红包类型
            red_envelope_type: 1, // 1: 普通， 2: 拼手气
            red_envelope_money: 0.3, // float 类型,
            exchange_desc: '请确保获奖数据真实有效',
            // red_exchange_desc: undefined,
            // >> 拼手气红包
            red_envelope_total: 0, // float 类型
            red_envelope_range: 1, // 1: 高， 2: 中， 3: 低
            //}
            // 兑换设置
            exchange_usage_type: 1, // 1: 兑换码, 2: 线下邮寄，
            exchange_code_type: 1, // 1: 系统自动生成, 2: 导入兑奖码，
            exchange_file_list: [],
            exchange_time: [],
            // >> 线下邮寄 时才有， 否则是 []
            mail_info: [],
            is_update: 1 //是否更新客户信息  1-关 2-开
        }
    ],
    reward_end_switch: 1, // 1:否， 2: 是
    /** 步骤三
     * 分享设置
     */
    // 活动链接设置
    // link_img: DEFAULT_SHARE_SETTING.link_img,
    // link_title: DEFAULT_SHARE_SETTING.link_title,
    // link_desc: DEFAULT_SHARE_SETTING.link_desc,
    // 分享海报设置
    poster: {
        poster_type: 2, //1: 海报库， 2: 本地上传
        poster_id: undefined, //海报库中海报id
        absolute_url: 'https://static.scrm.keyid.cn/assets/images/web-pc/default-groupfission-poster.png', //海报图片url
        avatar_flag: 1, //是否用户头像 1: 打开， 2: 关闭
        avatar_type: 2, //头像展示类型 1: 方形， 2: 圆形
        nickname_flag: 1, //是否用户昵称  1: 打开， 2: 关闭
        nickname_color: '#ffffff', //用户昵称颜色
        nickname_size: 14, //用户昵称字体大小
        desc_flag: 1, //是否描述 1: 打开， 2: 关闭
        desc_color: '#ffffff', //描述颜色
        desc_size: 12, //描述字体大小
        desc: '', //描述内容
        position: {
            avatarX: 1,
            avatarY: 1,
            nicknameX: 1,
            nicknameY: 1,
            qrcodeX: 1,
            qrcodeY: 1,
            descX: 1,
            descY: 1
        } //海报方位
    }
};

/**
 * @description 页面渲染表单所需的字段
 */
export const formParams = reactive<IFormParams>(cloneDeep(defaultFormParams));

/** 初始化 formParams */
export const initFormParams = () => {
    // 删除所有的属性，然后在进行深拷贝
    for (const key in formParams) {
        Reflect.deleteProperty(formParams, key);
    }
    Object.assign(formParams, cloneDeep(defaultFormParams));
};

/**
 * 设置formParams的方法。由详情获取过来的做转换
 * @param data 接口返回的data
 */
export const setPrizeFormParams = (data: any) => {
    // 设置奖品列表的红包字段
    data.reward_list.forEach((rewardItem: IRewardRow) => {
        // 实物
        if (rewardItem.reward_type === 1) {
            rewardItem.red_exchange_desc = DEFAULT_RED_EXCHANGE_DESC;
        } else {
            rewardItem.red_exchange_desc = rewardItem.exchange_desc;
            rewardItem.exchange_desc = DEFAULT_EXCHANGE_DESC;
        }

        rewardItem.mail_info = rewardItem.mail_info || [];
        // 追加奖品数量默认为0
        rewardItem.add_stock = 0;
    });

    Object.assign(formParams, data);
};
